'''
全局变量
局部变量
'''

# 1、全局变量和局部变量的作用域
number1 = 10 # 全局变量

def func1():
    number2 = 20 # 局部变量
    number1 = 30 # 局部变量
    print(f'里边调用，全局变量number1的值是：{number1}')
    print(f'里边调用，局部变量number2的值是：{number2}')


func1()
print(f'外边调用，全局变量number1的值是：{number1}')
# print(f'外边调用，局部变量number2的值是：{number2}') # 无法调用

# 2、在 func1() 中,修改了 number1 的值，现在，我们想作用到全局变量上
print('----华丽丽的分割线--------------')
number3 = 10 # 全局变量

def func2():
    global number3 # 声明为全局变量
    number3 = 30
    print(f'里边调用，全局变量number3的值是：{number3}')


func2()
print(f'外边调用，全局变量number3的值是：{number3}')

# 3、看个例子
print('----华丽丽的分割线--------------')
def func3():
    number4 = 40
    print(f'外层调用，局部变量number4的值是：{number4}')
    # print(f'外层调用，局部变量number5的值是：{number5}') # 无法调用
    def func4():
        number5 = 50
        number4 = 60
        print(f'内层调用，局部变量number4的值是：{number4}')
        print(f'内层调用，局部变量number5的值是：{number5}')

    func4()

func3()

# 4、内层函数的变量修改的值，我们想，作用到外层去，使用 nonlocal 声明一下就可以了
print('----华丽丽的分割线--------------')
def func3():
    number4 = 40
    print(f'外层调用，局部变量number4的值是：{number4}')
    # print(f'外层调用，局部变量number5的值是：{number5}') # 无法调用
    def func4():
        nonlocal number4
        number5 = 50
        number4 = 60
        print(f'内层调用，局部变量number4的值是：{number4}')
        print(f'内层调用，局部变量number5的值是：{number5}')

    func4()
    print(f'外层调用，局部变量number4的值是：{number4}')

func3()



